The present invention relates to distributed computing systems and is more particularly directed to an architecture and implementation of a scalable distributed computing environment which facilitates communication between independently operating nodes on a single network or on interconnected networks, which may be either homogeneous or heterogeneous.
In today's business environment, corporate structures are being increasingly reshaped due to the dynamics of mergers and acquisitions, globalization and the need for real-time communication with customers, suppliers and financial institutions. In addition, immediate access to information and the need to manipulate that information quickly have become critical in establishing and maintaining competitive advantage. This requires that corporate data and the computer programs which manipulate that data be deployed in a fundamentally new way; in a distributed rather than a centralized, monolithic manner.
With distributed computing, programs and data are logically positioned so that they can be processed as near as possible to the users that interact with them. In theory, this allows the corporation to operate more reliably and efficiently by reducing communications overhead and exploiting the underutilized processing power of personal, group, and departmental computing resources. By distributing workload over many computers, information processing resources can be optimized for a given individual, work group or purpose. This approach allows data and processes to be distributed and replicated so that performance and reliability can be more easily maintained as the demands on the system increase. The characteristics of increased granularity and scalability also provide important benefits relating to software reusability, i.e., the same component may be used in several different applications, thus reducing both development and maintenance time and costs.
Because of these demands, there is a movement toward enterprise-wide virtual computing in which the entire resources of the network appear to the user to be locally resident at his or her desktop computer or terminal. The traditional monolithic centralized corporate information processing model is yielding to a distributed, fine-grained approach. This transformation to virtual, dynamic enterprise computing requires that mission critical core systems be implemented using a distributed architecture in which localized computing resources (program elements and data) are seamlessly interlinked by virtual networks.
However, in today's corporate information systems, individual applications typically exist in heterogeneous environments that do not interoperate. Businesses are faced with the task of connecting incompatible systems while maintaining an ever increasing number of disparate operating systems and networking protocols over a wide geographic area. Corporate mergers and acquisitions are again on the rise, and the need to integrate installed heterogeneous networks into a single enterprise wide network, not once but multiple times, is needed. Further, corporations have become global entities and their information systems must now function over multiple time zones, requiring those systems to be "time-independent." Moreover, as corporations themselves are dynamically transformed, so are the information systems that support their business operations. Thus, the corporate computing environment must be "open," i.e., it must be flexible enough to easily migrate to new standards while maintaining the integrity and access to its existing "legacy" systems and data. Legacy systems typically rely on the use of static tables to keep track of networked resources. Such systems do not support dynamic recovery and are not easily scalable to enterprise-wide deployment because of the extremely high overhead that would be required to maintain these tables in a constantly changing environment.
In existing systems, in order for one resource connected to the network to discover the existence of another resource, both must be "alive." As the total number of resources connected to the network expands, it becomes vitally important to have a mechanism for time-independent resource discovery whereby the network automatically is made aware of new resources as they become available.
Existing systems are also limited by the availability of a fixed number of roles, or hierarchical levels, that can be assumed by any node, e.g., machine, area, group, domain, network, etc. This limitation presents significant problems when merging or integrating two or more existing networks having different hierarchical structures. In addition, in prior art systems, if a node assumes multiple roles, the relationship between those roles is prescribed. That is, in order to function at level one (e.g., machine) and level 3 (e.g., group manager), the node must also assume the level 2 function (e.g., area manager). This limitation can severely degrade system performance and recovery.
Prior attempts to address the problems associated with establishing robust, efficient enterprise-wide computing environments, such as real time messaging, message queuing, remote procedure calls, interprocess communication, and broadcast/publish and subscribe represent partial solutions at best. Because true distributed computing presupposes peer-to-peer communication (since master process failure necessarily leads to failure of slave processes), client-server based approaches to realizing the goal of enterprise computing represent suboptimal solutions. Existing peer-to-peer systems utilizing static tables do not allow dynamic recovery and present serious problems of scalability and maintenance.